/**
* <p> title ： ImageStatusLineContributionItem.java</p>
* <p> package ： com.akeil.sulfur.statusline</p>
* <p> description ：TODO</p>
* <p> copyright ： 哈尔滨工业大学(C) 2019</p>
* <p> company ： 哈尔滨工业大学AS&MT</p>
* <p> author ： 金雪松 jinxuesong@163.com</p>
* <p> date ： 2019年11月1日 下午3:53:20</p>
* <p> version ： v1.0 </p>
*
* Modification  History:
* Date         Author        Version        Discription
* -----------------------------------------------------------------------------------
* 2019年11月1日       金雪松          1.0             1.0
* Why & What is modified: <修改原因描述>
*/
package com.akeil.flash.statusline;

import java.text.DecimalFormat;

import org.eclipse.jface.action.StatusLineContributionItem;
import org.eclipse.jface.action.StatusLineLayoutData;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.plugin.AbstractUIPlugin;

import flash.Activator;

/**
 * <p> classname ： ImageStatusLineContributionItem</p>
 * <p> description ：TODO</p>
 * <p> author ： 金雪松 jinxuesong@163.com</p>
 * <p> date ： 2019年11月1日 下午3:53:20</p>
 */
public class ImageStatusLineContributionItem extends StatusLineContributionItem {
	private CLabel label;
	private int widthHint;
	private int heightHint;
	private String text = "测试";
	private Image image_g = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/statusline/Green_ball_24px.png").createImage();
	private Image image_r = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/statusline/Red_ball_24px.png").createImage();
	private int status;
	private int value = 0;
	private float fvalue = 0;
	private DecimalFormat df2 = new DecimalFormat("0.00");
	
	public ImageStatusLineContributionItem(String id) {
		super(id);
		// TODO 自动生成的构造函数存根
	}

	public ImageStatusLineContributionItem(String id, int charWidth) {
		super(id, charWidth);
		// TODO 自动生成的构造函数存根
		this.widthHint = charWidth;
	}

	@Override
	public void fill(Composite parent) {
		// TODO 自动生成的方法存根
		Label separator = new Label(parent, SWT.SEPARATOR);
		  label = new CLabel(parent, SWT.SHADOW_NONE);

		  GC gc = new GC(parent);
		  gc.setFont(parent.getFont());
		  FontMetrics fm = gc.getFontMetrics();
		  Point extent = gc.textExtent(text);
		  heightHint = fm.getHeight();
		  gc.dispose();

		  StatusLineLayoutData statusLineLayoutData = new StatusLineLayoutData();
		  statusLineLayoutData.widthHint = widthHint;
		  statusLineLayoutData.heightHint = heightHint;
		  label.setLayoutData(statusLineLayoutData);
		  label.setText(text);
		  label.setImage(image_r);
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
		if(status == 0){
			if(label != null && !label.isDisposed()){
				label.getDisplay().asyncExec(new Runnable(){

					@Override
					public void run() {
						// TODO 自动生成的方法存根
						label.setImage(image_g);
					}
					
				});
			}
		}else if(status == 1){
			if(label != null && !label.isDisposed()){
				label.getDisplay().asyncExec(new Runnable(){

					@Override
					public void run() {
						// TODO 自动生成的方法存根
						label.setImage(image_r);
					}
				});
			}
		}else{
			if(label != null && !label.isDisposed()){
				label.getDisplay().asyncExec(new Runnable(){

					@Override
					public void run() {
						// TODO 自动生成的方法存根
						label.setImage(null);
					}
				});
			}
		}
	}

	public void setText(String text) {
		this.text = text;
		if(label != null){
			if(value >= 0){
				label.setText(text + " : " + String.valueOf((int)value));
			}else{
				label.setText(text);
			}
		}
	}

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
		if(label != null){
			if(value >= 0){
				if(label != null && !label.isDisposed()){
					label.getDisplay().asyncExec(new Runnable(){

						@Override
						public void run() {
							// TODO 自动生成的方法存根
							label.setText(text + " : " + String.valueOf((int)value));
						}
					});
				}
			}else{
				if(label != null && !label.isDisposed()){
					label.getDisplay().asyncExec(new Runnable(){

						@Override
						public void run() {
							// TODO 自动生成的方法存根
							label.setText(text);
						}
					});
				}
			}
		}
	}
	
	public void setValue(float fvalue) {
		this.fvalue = fvalue;
		if(label != null){
			if(fvalue >= 0){
				if(label != null && !label.isDisposed()){
					label.getDisplay().asyncExec(new Runnable(){

						@Override
						public void run() {
							// TODO 自动生成的方法存根
							label.setText(text + " : " + df2.format(fvalue) + "℃");
						}
					});
				}
			}else{
				if(label != null && !label.isDisposed()){
					label.getDisplay().asyncExec(new Runnable(){

						@Override
						public void run() {
							// TODO 自动生成的方法存根
							label.setText(text);
						}
					});
				}
			}
		}
	}
}